/*
	process_control.h

	contains headers for functionality for initialising and terminating system processes as well as signal handling for both

	Author: Aidan Goddard 13/12/13
*/
#ifndef PROCESS_CONTROL_H_INCLUDED
#define PROCESS_CONTROL_H_INCLUDED

// all functions to be called with interrupts enabled, etc
uint64_t 	SpawnSlaveThread(uint64_t(*start_address)(void*), void *data, void *stack_ptr);
uint64_t	CreateSystemProc(uint64_t(*start_address)(void), void *stack_ptr, uint64_t param1, uint64_t param2, char *image_name, uint32_t image_length, char *description, uint32_t description_length);
void 		KillThisThread(uint64_t return_value);
void 		KillThisProcess(uint64_t exit_value);
void 		ReleasePCB(uint32_t pcb);

#endif
